package com.heima.pojo;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 售货机实体类
 *
 * @author 赵超
 * &#064;TableName  tb_vending_machine
 */
@TableName("tb_vending_machine")
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class VendingMachine implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * id
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 售货机类型
     * 0: 未知, 1: 智能柜, 2: 传统柜, ...
     */
    private Integer vmType;

    /**
     * 售货机软编号（唯一）
     */
    private String innerCode;

    /**
     * 点位Id
     */
    private Long nodeId;

    /**
     * 售货机状态
     * 0: 未投放; 1: 运营中; 3: 撤机
     */
    private Integer vmStatus;

    /**
     * 上次补货时间
     */
    private LocalDateTime lastSupplyTime;

    /**
     * 所在城市ID（如：110100）
     */
    private String cityCode;

    /**
     * 区域id（可能为业务区域）
     */
    private Integer areaId;

    /**
     * 创建人id
     */
    private Long createUserId;

    /**
     * 创建人姓名
     */
    private String createUserName;

    /**
     * 商圈Id
     */
    private Integer businessId;

    /**
     * 所属区域Id（行政或管理区域）
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long regionId;

    /**
     * 点位主Id（合作商/业主ID）
     */
    private Integer ownerId;

    /**
     * 所属合作商名称
     */
    private String ownerName;

    /**
     * 客户端连接Id，用于EMQ认证
     */
    private String clientId;

    /**
     * 经度
     */
    private Double longitudes;

    /**
     * 纬度（原文档拼写错误为 '维度'，实际应为 '纬度'）
     */
    private Double latitude;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    /**
     * 修改时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;

}